Customized playback at sink device in wireless display system

ABSTRACT

This disclosure describes techniques to improve a user experience in a Wireless Display (WD) system. The WD system includes a source device that provides media data to one or more sink devices. The techniques are directed toward reducing end-to-end latency in the WD system while improving video playback quality at the sink devices. More specifically, the techniques include customized playback at the sink devices based on the type of media data received from the source device. If the media data only includes video data and does not include audio data, a processing pipeline of the sink device is configured to render the video data without waiting to synchronize with non-existent audio data. If the media data includes both video data and audio data, an audio rendering start-up timer is reduced and the processing pipeline renders synchronized audio and video data according to the reduced start-up timer.

This application claims the benefit of U.S. Provisional Application No.61/604,086, filed Feb. 28, 2012; U.S. Provisional Application No.61/604,087, filed Feb. 28, 2012; U.S. Provisional Application No.61/604,090, filed Feb. 28, 2012; and U.S. Provisional Application No.61/604,094, filed Feb. 28, 2012, the entire content of each of which isincorporated herein by reference in its entirety.

TECHNICAL FIELD

The disclosure relates to transmitting data between a wireless sourcedevice and a wireless sink device.

BACKGROUND

Wireless display (WD) systems include a source device and one or moresink devices. The source device and each of the sink devices may beeither mobile devices or wired devices with wireless communicationcapabilities. As mobile devices, for example, one or more of the sourcedevice and the sink devices may comprise mobile telephones, tabletcomputers, laptop computers, portable computers with wirelesscommunication cards, personal digital assistants (PDAs), wireless gamingdevices, portable media players, or other flash memory devices withwireless communication capabilities. Mobile devices may also includeso-called “smart” phones and “smart” pads or tablets, or other types ofwireless communication devices. As wired devices, for example, one ormore of the source device and the sink devices may comprise televisions,desktop computers, monitors, projectors, and the like, that includewireless communication capabilities.

The source device sends media data, such as audio and/or video data, toone or more of the sink devices participating in a particularcommunication session. The media data may be played back at both a localdisplay of the source device and at each of the displays of the sinkdevices. More specifically, each of the participating sink devicesrenders the received media data on its display and audio equipment. Insome cases, a user of a sink device may apply user inputs to the sinkdevice, such as touch inputs and remote control inputs. In the WDsystem, the user inputs are sent from the sink device to the sourcedevice. The source device processes the received user inputs from thesink device and applies the effect of the user inputs on subsequentmedia data sent to the sink device.

SUMMARY

In general, this disclosure describes techniques to improve a userexperience in a Wireless Display (WD) system. The WD system includes asource device that provides media data, e.g., audio and/or video data,to one or more sink devices for playback. The techniques are directedtoward reducing end-to-end latency of the media data between the sourcedevice and the sink devices while improving video playback quality(i.e., smoothness) at the sink devices.

More specifically, the techniques of this disclosure include customizedplayback at the sink devices of the WD system based on the type of mediadata received from the source device. If the media data only includesvideo data and does not include audio data, a renderer included in aprocessing pipeline of the sink device is configured to performaccelerated rendering of the video data. For example, upon detectingthat the media data does not include audio data, the techniques includedisabling synchronization at a renderer included in the processingpipeline of the sink device, and rendering the video data withoutwaiting to synchronize with non-existent audio data. As another example,upon detecting that the media data includes both video data and audiodata, the techniques include reducing an audio rendering start-up timerand rendering synchronized audio and video data according to the reducedstart-up timer. In addition, the techniques include configuring theprocessing pipeline in the sink device prior to receiving the media datafrom the source device based on stream header information exchangedduring a capability negotiation period of the communication session inorder to reduce latency due to set up time.

In one example, this disclosure is directed to a method comprisingestablishing a communication session at a sink device with a sourcedevice in a WD system, receiving, with the sink device, media data fromthe source device, wherein the media data includes at least video data,decoding the received media data with a processing pipeline of the sinkdevice, detecting whether the decoded media data includes audio data,and, when the decoded media data does not include audio data, performingaccelerated rendering of the video data with the processing pipeline ofthe sink device.

In another example, this disclosure is directed to a sink devicecomprising a processing pipeline including one or more processing unitsconfigured to establish a communication session at the sink device witha source device in a WD system, receive media data from the sourcedevice, wherein the media data includes at least video data, decode thereceived media data, detect whether the received media data includesaudio data, and, when the received media data does not include audiodata, perform accelerated rendering of the video data, and a pipelinemanager configured to manage the processing pipeline of the sink device.

In a further example, this disclosure is directed to a sink devicecomprising means for establishing a communication session at the sinkdevice with a source device in a WD system, means for receiving mediadata from the source device, wherein the media data includes at leastvideo data, means for decoding the received media data with a processingpipeline of the sink device, means for detecting whether the receivedmedia data includes audio data, and, when the received media data doesnot include audio data, means for performing accelerated rendering ofthe video data with the processing pipeline of the sink device.

In another example, this disclosure is directed to a computer-readablemedium comprising instructions that when executed in a sink device causea programmable processor to establish a communication session at thesink device with a source device in a WD system, receive media data fromthe source device, wherein the media data includes at least video data,decode the received media data with a processing pipeline of the sinkdevice, detect whether the received media data includes audio data, and,when the received media data does not include audio data, performaccelerated rendering of the video data with the processing pipeline ofthe sink device.

The details of one or more examples of the disclosure are set forth inthe accompanying drawings and the description below. Other features,objects, and advantages will be apparent from the description anddrawings, and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example of a Wireless Display(WD) system including a source device and a sink device capable ofsupporting techniques of this disclosure to reduce end-to-end latencybetween the source device and the sink device while improving videoplayback quality.

FIG. 2 is a block diagram illustrating an example of a source device ina WD system that may implement techniques of this disclosure.

FIG. 3 is a block diagram illustrating an example of a sink device in aWD system that may implement techniques of this disclosure.

FIG. 4 is a block diagram illustrating a transmitter system and areceiver system that may implement techniques of this disclosure.

FIG. 5 is a block diagram illustrating an example of a source devicecapable of supporting techniques of this disclosure to reduce latency inthe processing pipeline of the source device.

FIG. 6 is a block diagram illustrating an example of a sink devicecapable of supporting techniques of this disclosure to reduce latency inthe processing pipeline of the sink device and improve video playback atthe sink device.

FIG. 7 is a conceptual diagram illustrating an example data packet thatmay be used for delivering user input data and/or feedback data obtainedat a sink device to a source device.

FIG. 8 is a flowchart illustrating an exemplary operation of a sourcedevice capable of supporting low-latency frame capture and buffering ofmedia data in a processing pipeline.

FIG. 9 is a flowchart illustrating an exemplary operation of a sinkdevice capable of supporting customized video playback in a processingpipeline.

FIG. 10 is a flowchart illustrating an exemplary operation of a sinkdevice capable of supporting customized buffering based on media dataapplication awareness in a processing pipeline.

FIG. 11 is a flowchart illustrating an exemplary operation of a sourcedevice and a sink device capable of supporting prioritized transport ofaudio data in a WD system.

DETAILED DESCRIPTION

Techniques are described in this disclosure for improving a userexperience in a Wireless Display (WD) system. The WD system includes asource device that provides media data, e.g., audio and/or video data,to one or more sink devices for playback. The techniques are directedtoward reducing end-to-end latency of the media data between the sourcedevice and the sink devices while improving video playback quality(i.e., smoothness) at the sink devices.

In one example, the techniques include low latency screen capture andbuffering at the source device of the WD system. For example, uponestablishing a communication session in the WD system, a pipelinemanager may configure a processing pipeline of the source device toinclude minimum-size buffers between processing steps to reduce latency.The source device then buffers at least a most recent frame update ofthe media data in the minimum-size buffers, and drops older frameupdates when the minimum-size buffers are full. In addition, theprocessing pipeline may be configured to use hardware acceleration toretrieve the frame updates from the buffers for processing with thepipeline processing of the source device. Using hardware accelerationmay reduce the processing load on a central processing unit (CPU) of thesource device to increase frame rate and reduce latency. The sourcedevice may also retransmit encoded frame updates (i.e., performduplicated push) to ensure timely receipt by the sink devices to furtherreduce latency in the WD system.

In another example, the techniques include customized playback at thesink devices of the WD system based on the type of media data receivedfrom the source device. If the media data only includes video data anddoes not include audio data, a renderer included in a processingpipeline of the sink device is configured to perform acceleratedrendering of the video data. For example, upon detecting that the mediadata does not include audio data, a pipeline manager may disablesynchronization at the renderer included in the processing pipeline ofthe sink device to enable the renderer to render the video data withoutwaiting to synchronize with non-existent audio data. As another example,upon detecting that the media data includes both video data and audiodata, the pipeline manager may reduce an audio rendering start-up timerso the renderer can render the synchronized audio and video dataaccording to the reduced start-up timer. In addition, the pipelinemanager may configure the processing pipeline in the sink device priorto receiving the media data from the source device based on streamheader information exchanged during a capability negotiation period ofthe communication session in order to reduce latency due to set up time.

In a further example, the techniques include customized buffering at thesink devices of the WD system based on application awareness for themedia data received from the source device. The sink device learns thetype of application for the media data, and a pipeline manager adjuststhe size of buffers in the processing pipeline of the sink device toachieve an appropriate balance between smoothness and latency for theapplication type. In some cases, the type of application for the mediadata may be detected at the source device, and the sink device may learnthe type of application based on an indication received form the sourcedevice. In other cases, the sink device may learn the type ofapplication for the media data by detecting the type of applicationitself. For example, when the media data is for a video playbackapplication, in which quality or smoothness of the playback is highestpriority at the sink device and the low latency techniques describedabove may cause visible jitter, the buffer size is increased to increasesmoothness of the media data in the video playback application. On thecontrary, when the media data is for a user interface (UI) applicationor a gaming application, in which low latency is the highest priority atthe sink device, the buffer size is decreased to reduce latency for theUI or gaming application.

The techniques also include prioritizing transport of audio data overtransport of video data between the source device and the sink devicesin the WD system. The transport of video data packets is tied to thetransport of associated audio data packets such that ensuring that allthe audio packets reach the sink device reduces latency at the sinkdevice waiting to receive dropped packets. A pipeline manager mayconfigure an audio pipeline path to include more buffering than a videopipeline path in the source device. In addition, a wireless modem socketat the source device may provide a higher priority transportation queuefor the audio pipeline path than for the video pipeline path. Theadditional buffering ensures that fewer audio packets will be dropped atthe source device. The higher priority transportation queue ensures thatthe audio packets will be queued for transport at the source devicebefore the corresponding video packets to avoid delays or stalls in thevideo pipeline path. In addition, the sink device may provide feedbackinformation to the source device describing transport conditions of thecommunication channel, and the pipeline manager may modify theprocessing pipeline of the source device based on the feedbackinformation.

FIG. 1 is a block diagram illustrating an example of a Wireless Display(WD) system 100 including a source device 120 and a sink device 160capable of supporting techniques of this disclosure to reduce end-to-endlatency between source device 120 and sink device 160 while improvingvideo playback quality. As shown in FIG. 1, WD system 100 includessource device 120 that communicates with sink device 160 viacommunication channel 150.

Source device 120 may include a memory that stores audio and/or video(A/V) media data 121, display 122, speaker 123, audio and/or video (A/V)encoder 124 (also referred to as encoder 124), audio and/or video (A/V)control module 125, and transmitter/receiver (TX/RX) unit 126. Sinkdevice 160 may include display 162, speaker 163, audio and/or video(A/V) decoder 164 (also referred to as decoder 164),transmitter/receiver unit 166, user input (UI) device 167, and userinput processing module (UIPM) 168. The illustrated componentsconstitute merely one example configuration for WD system 100. Otherconfigurations may include fewer components than those illustrated ormay include additional components than those illustrated.

In the example of FIG. 1, source device 120 can display the videoportion of A/V media data 121 on display 122 and can output the audioportion of A/V media data 121 on speaker 123. A/V media data 121 may bestored locally on source device 120, accessed from an external storagemedium such as a file server, hard drive, external memory, Blu-ray disc,DVD, or other physical storage medium, or may be streamed to sourcedevice 120 via a network connection such as the internet. In someinstances A/V media data 121 may be captured in real-time via a cameraand microphone of source device 120. A/V media data 121 may includemultimedia content such as movies, television shows, or music, but mayalso include real-time content generated by source device 120. Suchreal-time content may for example be produced by applications running onsource device 120, or video data captured, e.g., as part of a videotelephony session. Such real-time content may in some instances includea video frame of user input options available for a user to select. Insome instances, A/V media data 121 may include video frames that are acombination of different types of content, such as a video frame of amovie or TV program that has user input options overlaid on the frame ofvideo.

In addition to rendering A/V media data 121 locally via display 122 andspeaker 123, A/V encoder 124 of source device 120 can encode A/V mediadata 121, and transmitter/receiver unit 126 can transmit the encodeddata over communication channel 150 to sink device 160.Transmitter/receiver unit 166 of sink device 160 receives the encodeddata, and A/V decoder 164 decodes the encoded data and outputs thedecoded data via display 162 and speaker 163. In this manner, the audioand video data being rendered by display 122 and speaker 123 can besimultaneously rendered by display 162 and speaker 163. The audio dataand video data may be arranged in frames, and the audio frames may betime-synchronized with the video frames when rendered.

A/V encoder 124 and A/V decoder 164 may implement any number of audioand video compression standards, such as the ITU-T H.264 standard,alternatively referred to as MPEG-4, Part 10, Advanced Video Coding(AVC), or the newly emerging high efficiency video coding (HEVC)standard. Many other types of proprietary or standardized compressiontechniques may also be used. Generally speaking, A/V decoder 164 isconfigured to perform the reciprocal coding operations of A/V encoder124. Although not shown in FIG. 1, in some aspects, A/V encoder 124 andA/V decoder 164 may each be integrated with an audio encoder anddecoder, and may include appropriate MUX-DEMUX units, or other hardwareand software, to handle encoding of both audio and video in a commondata stream or separate data streams.

A/V encoder 124 may also perform other encoding functions in addition toimplementing a video compression standard as described above. Forexample, A/V encoder 124 may add various types of metadata to A/V mediadata 121 prior to A/V media data 121 being transmitted to sink device160. In some instances, A/V media data 121 may be stored on or receivedat source device 120 in an encoded form and thus not require furthercompression by A/V encoder 124.

Although, FIG. 1 shows communication channel 150 carrying audio payloaddata and video payload data separately, it is to be understood that insome instances video payload data and audio payload data may be part ofa common data stream. If applicable, MUX-DEMUX units may conform to theITU H.223 multiplexer protocol, or other protocols such as the userdatagram protocol (UDP). A/V encoder 124 and A/V decoder 164 each may beimplemented as one or more microprocessors, digital signal processors(DSPs), application specific integrated circuits (ASICs), fieldprogrammable gate arrays (FPGAs), discrete logic, software, hardware,firmware or any combinations thereof. Each of A/V encoder 124 and A/Vdecoder 164 may be included in one or more encoders or decoders, eitherof which may be integrated as part of a combined encoder/decoder(CODEC). Thus, each of source device 120 and sink device 160 maycomprise specialized machines configured to execute one or more of thetechniques of this disclosure.

Display 122 and display 162 may comprise any of a variety of videooutput devices such as a cathode ray tube (CRT), a liquid crystaldisplay (LCD), a plasma display, a light emitting diode (LED) display,an organic light emitting diode (OLED) display, or another type ofdisplay device. In these or other examples, the displays 122 and 162 mayeach be emissive displays or transmissive displays. Display 122 anddisplay 162 may also be touch displays such that they are simultaneouslyboth input devices and display devices. Such touch displays may becapacitive, resistive, or other type of touch panel that allows a userto provide user input to the respective device.

Speaker 123 may comprise any of a variety of audio output devices suchas headphones, a single-speaker system, a multi-speaker system, or asurround sound system. Additionally, although display 122 and speaker123 are shown as part of source device 120 and display 162 and speaker163 are shown as part of sink device 160, source device 120 and sinkdevice 160 may in fact be a system of devices. As one example, display162 may be a television, speaker 163 may be a surround sound system, anddecoder 164 may be part of an external box connected, either wired orwirelessly, to display 162 and speaker 163. In other instances, sinkdevice 160 may be a single device, such as a tablet computer orsmartphone. In still other cases, source device 120 and sink device 160are similar devices, e.g., both being smartphones, tablet computers, orthe like. In this case, one device may operate as the source and theother may operate as the sink. These rolls may even be reversed insubsequent communication sessions. In still other cases, the sourcedevice may comprise a mobile device, such as a smartphone, laptop ortablet computer, and the sink device may comprise a more stationarydevice (e.g., with an AC power cord), in which case the source devicemay deliver audio and video data for presentation to a large crowd viathe sink device.

Transmitter/receiver unit 126 and transmitter/receiver unit 166 may eachinclude various mixers, filters, amplifiers and other componentsdesigned for signal modulation, as well as one or more antennas andother components designed for transmitting and receiving data.Communication channel 150 generally represents any suitablecommunication medium, or collection of different communication media,for transmitting video data from source device 120 to sink device 160.Communication channel 150 is usually a relatively short-rangecommunication channel, similar to Wi-Fi, Bluetooth, or the like.However, communication channel 150 is not necessarily limited in thisrespect, and may comprise any wireless or wired communication medium,such as a radio frequency (RF) spectrum or one or more physicaltransmission lines, or any combination of wireless and wired media. Inother examples, communication channel 150 may even form part of apacket-based network, such as a wired or wireless local area network, awide-area network, or a global network such as the Internet.Additionally, communication channel 150 may be used by source device 120and sink device 160 to create a peer-to-peer link.

Source device 120 and sink device 160 may establish a communicationsession according to a capability negotiation using, for example,Real-Time Streaming Protocol (RTSP) control messages. Source device 120and sink device 160 may then communicate over communication channel 150using a communications protocol such as a standard from the IEEE 802.11family of standards. Source device 120 and sink device 160 may, forexample, communicate according to the Wi-Fi Direct (WFD) standard, suchthat source device 120 and sink device 160 communicate directly with oneanother without the use of an intermediary such as wireless accesspoints or so called hotspots. Source device 120 and sink device 160 mayalso establish a tunneled direct link setup (TDLS) to avoid or reducenetwork congestion. WFD and TDLS are intended to setup relativelyshort-distance communication sessions. Relatively short distance in thiscontext may refer to, for example, less than approximately 70 meters,although in a noisy or obstructed environment the distance betweendevices may be even shorter, such as less than approximately 35 meters,or less than approximately 20 meters.

The techniques of this disclosure may at times be described with respectto WFD, but it is contemplated that aspects of these techniques may alsobe compatible with other communication protocols. By way of example andnot limitation, the wireless communication between source device 120 andsink device may utilize orthogonal frequency division multiplexing(OFDM) techniques. A wide variety of other wireless communicationtechniques may also be used, including but not limited to time divisionmulti access (TDMA), frequency division multi access (FDMA), codedivision multi access (CDMA), or any combination of OFDM, FDMA, TDMAand/or CDMA.

In addition to decoding and rendering data received from source device120, sink device 160 can also receive user inputs from user input device167. User input device 167 may, for example, be a keyboard, mouse,trackball or track pad, touch screen, voice command recognition module,or any other such user input device. UIPM 168 formats user inputcommands received by user input device 167 into a data packet structurethat source device 120 is capable of interpreting. Such data packets aretransmitted by transmitter/receiver 166 to source device 120 overcommunication channel 150. Transmitter/receiver unit 126 receives thedata packets, and A/V control module 125 parses the data packets tointerpret the user input command that was received by user input device167. Based on the command received in the data packet, A/V controlmodule 125 can change the content being encoded and transmitted. In thismanner, a user of sink device 160 can control the audio payload data andvideo payload data being transmitted by source device 120 remotely andwithout directly interacting with source device 120.

Additionally, users of sink device 160 may be able to launch and controlapplications on source device 120. For example, a user of sink device160 may able to launch a photo editing application stored on sourcedevice 120 and use the application to edit a photo that is storedlocally on source device 120. Sink device 160 may present a user with auser experience that looks and feels like the photo is being editedlocally on sink device 160 while in fact the photo is being edited onsource device 120. Using such a configuration, a device user may be ableto leverage the capabilities of one device for use with several devices.For example, source device 120 may comprise a smartphone with a largeamount of memory and high-end processing capabilities. When watching amovie, however, the user may wish to watch the movie on a device with abigger display screen, in which case sink device 160 may be a tabletcomputer or even larger display device or television. When wanting tosend or respond to email, the user may wish to use a device with aphysical keyboard, in which case sink device 160 may be a laptop. Inboth instances, the bulk of the processing may still be performed bysource device 120 even though the user is interacting with a sinkdevice. The source device and the sink device may facilitate two wayinteractions by negotiating and/or identifying the capabilities of thedevices in any given session.

In some configurations, A/V control module 125 may comprise an operatingsystem process that is executed by the operating system of source device120. In other configurations, however, A/V control module 125 maycomprise a software process of an application running on source device120. In such a configuration, the user input command may be interpretedby the software process, such that a user of sink device 160 isinteracting directly with the application running on source device 120,as opposed to the operating system running on source device 120. Byinteracting directly with an application as opposed to an operatingsystem, a user of sink device 160 may have access to a library ofcommands that are not native to the operating system of source device120. Additionally, interacting directly with an application may enablecommands to be more easily transmitted and processed by devices runningon different platforms.

User inputs applied at sink device 160 may be sent back to source device120 over communication channel 150. In one example, a reverse channelarchitecture, also referred to as a user interface back channel (UIBC)may be implemented to enable sink device 160 to transmit the user inputsapplied at sink device 160 to source device 120. The reverse channelarchitecture may include upper layer messages for transporting userinputs, and lower layer frames for negotiating user interfacecapabilities at sink device 160 and source device 120. The UIBC mayreside over the Internet Protocol (IP) transport layer between sinkdevice 160 and source device 120. In this manner, the UIBC may be abovethe transport layer in the Open System Interconnection (OSI)communication model. To promote reliable transmission and in sequencedelivery of data packets containing user input data, UIBC may beconfigured to run on top of other packet-based communication protocolssuch as the transmission control protocol/internet protocol (TCP/IP) orthe user datagram protocol (UDP). UDP and TCP can operate in parallel inthe OSI layer architecture. TCP/IP can enable sink device 160 and sourcedevice 120 to implement retransmission techniques in the event of packetloss.

The UIBC may be designed to transport various types of user input data,including cross-platform user input data. For example, source device 120may run the iOS® operating system, while sink device 160 runs anotheroperating system such as Android® or Windows®. Regardless of platform,UIPM 168 can encapsulate received user input in a form understandable toA/V control module 125. A number of different types of user inputformats may be supported by the UIBC so as to allow many different typesof source and sink devices to exploit the protocol regardless of whetherthe source and sink devices operate on different platforms. Genericinput formats may be defined, and platform specific input formats mayboth be supported, thus providing flexibility in the manner in whichuser input can be communicated between source device 120 and sink device160 by the UIBC.

The techniques of this disclosure may improve a user experience in WDsystem 100. Typical use-cases for users of WD system 100 includedisplaying user interface applications running on source device 120 on alarger display screen of sink device 160 with reverse human interfacedevice (HID) feedback, displaying gaming applications running on sourcedevice 120 at sink device 160, and displaying video playbackapplications running on source device 120 at sink device 160. For eachof these use-cases, source device 120 may transmit the contents of anentire frame buffers and frame updates end-to-end to sink device 160 fordisplay to a user of sink device 160. Transmitter/receiver 126 of sourcedevice 120 may transport the encoded video frames totransmitter/receiver 166 of source device 160 using the Real-timeTransport Protocol (RTP)/User Datagram Protocol (UDP) or theTransmission Control Protocol (TCP).

In order for WD system 100 to provide a similar user experience as HighDefinition Multimedia Interface (HDMI) or other types of display cables,WD system 100 needs to achieve end-to-end latency of less thanapproximately 80 milliseconds (ms). In the case of the video playbackapplication use-case, however, WD system 100 also needs to achieve highquality (i.e., smoothness) in the video playback at sink device 160without introducing too much additional latency. This disclosuredescribes several techniques that may be applied individually or incombination to WD system 100 to achieve the latency and quality needsdescribed above for an improved user experience.

According to the techniques of this disclosure, processing pipelines maybe configured in both source device 120 and sink device 160 to reduceend-to-end latency of A/V media data 121 transmitted between sourcedevice 120 and sink device 160 while improving video playback quality atsink device 160. In one example, the techniques include low latencyscreen capture and buffering at source device 120. For example, uponestablishing a communication session in WD system 100, a pipelinemanager may configure a processing pipeline of source device 120 toinclude minimum-size buffers capable of holding at least a most recentframe update of A/V media data 121 between processing steps to reducelatency. In addition, the processing pipeline of source device 120 maybe configured to use hardware acceleration to retrieve the frame updatesfrom the buffers for processing with the pipeline processing.

In another example, the techniques include customized playback at sinkdevice 160 based on the type of A/V media data 121 received from sourcedevice 120. If A/V media data 121 only includes video data and does notinclude audio data, a renderer included in a processing pipeline of sinkdevice 160 may be configured to perform accelerated rendering of thevideo data. If A/V media data 121 includes both video data and audiodata, a pipeline manager may reduce an audio rendering start-up timer sothe renderer can render the synchronized audio and video data accordingto the reduced start-up timer. In addition, the pipeline manager mayconfigure the processing pipeline in sink device 160 prior to receivingA/V media data 121 from source device 120 based on stream headerinformation exchanged during a capability negotiation period of thecommunication session in order to reduce latency due to set up time.

In a further example, the techniques include customized buffering atsink device 160 based on application awareness for A/V media data 121received from source device 120. Sink device 160 learns the type ofapplication for A/V media data 121, and a pipeline manager adjusts thesize of buffers in the processing pipeline of sink device 160 to achievean appropriate balance between smoothness and latency for theapplication type. For example, when A/V media data 121 is for a videoplayback application, the buffer size is increased to increasesmoothness for the video playback application. On the contrary, when A/Vmedia data 121 is for a user interface (UI) application or a gamingapplication, the buffer size is decreased to reduce latency for the UIor gaming application.

The techniques of this disclosure may also include prioritizingtransport of audio data over transport of video data between sourcedevice 120 and sink device 160. The transport of video data packets istied to the transport of associated audio data packets such thatensuring that all the audio packets reach the sink device reduceslatency at the sink device waiting to receive dropped packets. Apipeline manager may configure an audio pipeline path to include morebuffering than a video pipeline path in source device 120. In addition,a wireless modem socket at source device 120 may provide a higherpriority transportation queue for the audio pipeline path than for thevideo pipeline path. In addition, sink device 160 may provide feedbackinformation to source device 120 describing transport conditions ofcommunication channel 150 over the UIBC, and the pipeline manager maymodify the processing pipeline of source device 120 based on thefeedback information.

In the example of FIG. 1, source device 120 may comprise a smartphone,tablet computer, laptop computer, desktop computer, Wi-Fi enabledtelevision, or any other device capable of transmitting audio and videodata. Sink device 160 may likewise comprise a smartphone, tabletcomputer, laptop computer, desktop computer, Wi-Fi enabled television,or any other device capable of receiving audio and video data andreceiving user input data. In some instances, sink device 160 mayinclude a system of devices, such that display 162, speaker 163, UIdevice 167, and A/V encoder 164 all parts of separate but interoperativedevices. Source device 120 may likewise be a system of devices ratherthan a single device.

In this disclosure, the term source device is generally used to refer tothe device that is transmitting A/V data, and the term sink device isgenerally used to refer to the device that is receiving the A/V datafrom the source device. In many cases, source device 120 and sink device160 may be similar or identical devices, with one device operating asthe source and the other operating as the sink. Moreover, these rollsmay be reversed in different communication sessions. Thus, a sink devicein one communication session may become a source device in a subsequentcommunication session, or vice versa.

In some examples, WD system 100 may include one or more sink devices inaddition to sink device 160. Similar to sink device 160, the additionalsink devices may receive A/V data from source device 120 and transmituser commands to source device 120 over an established UIBC. In someconfigurations, the multiple sink devices may operate independently ofone another, and A/V data output at source device 120 may besimultaneously output at sink device 160 and one or more of theadditional sink devices. In alternate configurations, sink device 160may be a primary sink device and one or more of the additional sinkdevices may be secondary sink devices. In such an example configuration,sink device 160 and one of the additional sink devices may be coupled,and sink device 160 may display video data while the additional sinkdevice outputs corresponding audio data. Additionally, in someconfigurations, sink device 160 may output transmitted video data onlywhile the additional sink device outputs transmitted audio data.

FIG. 2 is a block diagram illustrating an example of a source device 220in a WD system that may implement techniques of this disclosure. Sourcedevice 220 may be a device similar to source device 120 in FIG. 1 andmay operate in the same manner as source device 120. Source device 220includes local display 222, speakers 223, processor 231, displayprocessor 235, audio processor 236, memory 232, transport unit 233, andwireless modem 234. As shown in FIG. 2, source device 220 may includeone or more processors (i.e. processor 231, display processor 235 andaudio processor 236) that encode and/or decode A/V media data fortransport, storage, and display. The A/V media data may for example bestored at memory 232. Memory 232 may store an entire A/V file, or maycomprise a smaller buffer that simply stores a portion of an A/V file,e.g., streamed from another device or source.

Transport unit 233 may process encoded A/V media data for networktransport. For example, encoded A/V media data may be processed byprocessor 231 and encapsulated by transport unit 233 into Network AccessLayer (NAL) units for communication across a network. The NAL units maybe sent by wireless modem 234 to a wireless sink device via a networkconnection. Wireless modem 234 may, for example, be a Wi-Fi modemconfigured to implement one of the IEEE 802.11 family of standards.Source device 220 may also locally process and display A/V media data.In particular, display processor 235 may process video data to bedisplayed on local display 222, and audio processor 236 may processaudio data for output on speaker 223.

As described above with reference to source device 120 of FIG. 1, sourcedevice 220 may receive user input commands from a sink device. Forexample, wireless modem 234 of source device 220 may receiveencapsulated user input data packets, such as NAL units, from a sinkdevice and send the encapsulated data units to transport unit 233 fordecapsulation. Transport unit 233 may extract the user input datapackets from the NAL units, and processor 231 may parse the data packetsto extract the user input commands. Based on the user input commands,processor 231 modifies the processing of A/V media data by source device220. In other examples, source device 220 may include a user input unitor driver (not shown in FIG. 2) that receives the user input datapackets from transport unit 233, parses the data packets to extract theuser input commands, and directs processor 231 to modify processing ofA/V media data by source device 220 based on the user input commands.

Processor 231 of FIG. 2 generally represents any of a wide variety ofprocessors, including but not limited to one or more digital signalprocessors (DSPs), general purpose microprocessors, application specificintegrated circuits (ASICs), field programmable logic arrays (FPGAs),other equivalent integrated or discrete logic circuitry, or somecombination thereof. Memory 232 of FIG. 2 may comprise any of a widevariety of volatile or non-volatile memory, including but not limited torandom access memory (RAM) such as synchronous dynamic random accessmemory (SDRAM), read-only memory (ROM), non-volatile random accessmemory (NVRAM), electrically erasable programmable read-only memory(EEPROM), FLASH memory, and the like. Memory 232 may comprise acomputer-readable storage medium for storing audio/video data, as wellas other kinds of data. Memory 232 may additionally store instructionsand program code that are executed by processor 231 as part ofperforming the various techniques described in this disclosure.

The techniques of this disclosure include configuring a processingpipeline of source device 220 to reduce latency in order to improve auser experience at source device 220 and at one or more sink devices inthe WD system. The processing pipeline of source device 220 includes aone or more processing units executed by processor 231 and/or transportunit 233. The techniques are described in further detail with respect toa processing pipeline of source device 520 illustrated in FIG. 5.

In one example, the processing pipeline of source device 220 may bemodified to provide low latency screen capture and buffering of mediadata. More specifically, the processing pipeline of source device 220may be configured to include minimum-size buffers between processingsteps within processor 231 to reduce latency. Source device 220 thenbuffers at least a most recent frame update of the media data in theminimum-size buffers, and drops older frame updates when theminimum-size buffers are full.

The processing pipeline of source device 220 may also be configured touse hardware acceleration to retrieve the frame updates from the buffersfor processing. Using hardware acceleration may reduce the processingload on a central processing unit (CPU) of source device 220, which willincrease frame rate and reduce latency in the WD system. Source device220 may also retransmit encoded frame updates (i.e., perform duplicatedpush) to ensure timely receipt by the sink devices to further reducelatency in the WD system.

As another example, according to the techniques, the processing pipelineof source device 220 may be configured to prioritize transport of audiodata over transport of video data between source device 220 and the sinkdevices in the WD system. The transport of video data packets is tied tothe transport of associated audio data packets such that ensuring thatall the audio packets reach the sink devices reduces latency at the sinkdevices waiting to receive dropped packets.

More specifically, an audio pipeline path of source device 220 may beconfigured to include more buffering than a video pipeline path. Theadditional buffering ensures that fewer audio packets will be dropped atsource device 220. As another example, the processing pipeline of sourcedevice 220 may be configured to provide a higher priority transportationqueue at wireless modem 234 for the audio pipeline path than for thevideo pipeline path. The higher priority transportation queue ensuresthat the audio packets will be queued for transport at source device 220before the corresponding video packets to avoid delays or stalls in thevideo pipeline path caused by video packets waiting for correspondingaudio packets. In addition, wireless modem 234 of source device 220 mayreceive feedback information from the sink devices in the WD systemdescribing transport conditions of the communication channel. Inresponse, source device 220 may modify the processing pipeline based onthe feedback information.

Applying one or more of the techniques described above to source device220 may reduce end-to-end latency in a WD system and improve the userexperience at both source device 220 and the sink devices in the WDsystem.

FIG. 3 is a block diagram illustrating an example of a sink device 360in a WD system that may implement techniques of this disclosure. Sinkdevice 360 may be a device similar to sink device 160 in FIG. 1 and mayoperate in the same manner as sink device 160. Sink device 360 includesprocessor 331, memory 332, transport unit 333, wireless modem 334,display processor 335, local display 362, audio processor 336, speaker363, and user input interface 376.

Sink device 360 receives at wireless modem 334 encapsulated data unitssent from a source device. Wireless modem 334 may, for example, be aWi-Fi modem configured to implement one or more standards from the IEEE802.11 family of standards. Transport unit 333 can decapsulate theencapsulated data units. For instance, transport unit 333 may extractencoded video data from the encapsulated data units and send the encodedA/V data to processor 331 to be decoded and rendered for output. Displayprocessor 335 may process decoded video data to be displayed on localdisplay 362, and audio processor 336 may process decoded audio data foroutput on speaker 363.

In addition to rendering audio and video data, wireless sink device 360may also receive user input data through user input interface 376. Userinput interface 376 can represent any of a number of user input devicesincluded but not limited to a touch display interface, a keyboard, amouse, a voice command module, gesture capture device (e.g., withcamera-based input capturing capabilities) or any other of a number ofuser input devices. User input received through user input interface 376can be processed by processor 331. This processing may includegenerating data packets that include the received user input command.Once generated, transport unit 333 may process the data packets fornetwork transport to a source device over a UIBC.

Processor 331 of FIG. 3 may comprise one or more of a wide range ofprocessors, such as one or more digital signal processors (DSPs),general purpose microprocessors, application specific integratedcircuits (ASICs), field programmable logic arrays (FPGAs), otherequivalent integrated or discrete logic circuitry, or some combinationthereof. Memory 332 of FIG. 3 may comprise any of a wide variety ofvolatile or non-volatile memory, including but not limited to randomaccess memory (RAM) such as synchronous dynamic random access memory(SDRAM), read-only memory (ROM), non-volatile random access memory(NVRAM), electrically erasable programmable read-only memory (EEPROM),FLASH memory, and the like. Memory 332 may comprise a computer-readablestorage medium for storing audio/video data, as well as other kinds ofdata. Memory 332 may additionally store instructions and program codethat are executed by processor 331 as part of performing the varioustechniques described in this disclosure.

The techniques of this disclosure include configuring a processingpipeline of sink device 360 to reduce latency and improve video playbackquality (i.e., smoothness) in order to improve a user experience at sinkdevice 360. The processing pipeline of sink device 360 includes a one ormore processing units executed by processor 331 and/or transport unit333. The techniques are described in further detail with respect to aprocessing pipeline of sink device 660 illustrated in FIG. 6.

In one example, the processing pipeline of sink device 360 may beconfigured to provide customized playback of media data at sink device360 based on the type of media data received from the source device inthe WD system. More specifically, if the media data only includes videodata and does not include audio data, the processing pipeline of sinkdevice 360 may be configured to perform accelerated rendering of thevideo data. Upon detecting that the media data does not include audiodata, for example, sink device 360 may disable synchronization andrender the video data without waiting to synchronize with non-existentaudio data. On the other hand, upon detecting that the media dataincludes both video data and audio data, sink device 360 may reduce anaudio rendering start-up timer and render the synchronized audio andvideo data according to the reduced start-up timer.

In addition, the processing pipeline of sink device 360 may beconfigured prior to receiving the media data from the source devicebased on stream header information. The stream header information may beexchanged by sink device 360 and the source device during a capabilitynegotiation period of the communication session in the WD system. Inthis way, the processing pipeline of sink device 360 may beginprocessing received media data immediately and eliminate or reduce anylatency due to set up time of the processing pipeline.

As another example, according to the techniques, the processing pipelineof sink device 360 may be configured to provide customized buffering ofmedia data based on application awareness for the media data receivedfrom the source device. More specifically, sink device 360 may learn thetype of application for received media data, and adjust the size ofbuffers in the processing pipeline to achieve an appropriate balancebetween smoothness and latency for the application type. In some cases,the type of application for the media data may be detected at the sourcedevice and signaled with the media data to sink device 360. In thatcase, sink device 360 learns the type of application for the media databased on the indication received from the source device. In other cases,sink device 360 may learn the type of application for the media data bydetecting the type of application itself.

When the media data is for a video playback application, in whichquality or smoothness of the playback is highest priority at the sinkdevice and the low latency techniques described above may cause visiblejitter, the buffer size in the processing pipeline of sink device 360 isincreased to increase smoothness of the media data in the video playbackapplication. On the contrary, when the media data is for a userinterface (UI) application or a gaming application, in which low latencyis the highest priority at the sink device, the buffer size in theprocessing pipeline of sink device 360 is decreased to reduce latencyfor the UI or gaming application.

As a further example, according to the techniques, wireless modem 334 ofsink device 360 may transmit feedback information describing transportconditions of the communication channel to the source devices in the WDsystem. Sink device 360 may determine the transport conditions of thecommunication channel based on error rates and/or packet losses ofpreviously received media data. Wireless modem 334 may transmit thefeedback information over a UIBC or other reverse channel to the sourcedevice. In some cases, sink device 360 may use Real-time TransportControl Protocol (RTCP) for feedback streaming. In response, the sourcedevice may modify its processing of media data destined for sink device360 based on the feedback information.

Applying one or more of the techniques described above to sink device360 may reduce end-to-end latency in a WD system and increase videoplayback quality to increase the user experience at sink device 360 inthe WD system.

FIG. 4 is a block diagram illustrating an example transmitter system 410and receiver system 450, which may be used by transmitter/receiver 126and transmitter/receiver 166 of FIG. 1 for communicating overcommunication channel 150. At transmitter system 410, traffic data for anumber of data streams is provided from a data source 412 to a transmit(TX) data processor 414. Each data stream may be transmitted over arespective transmit antenna. TX data processor 414 formats, codes, andinterleaves the traffic data for each data stream based on a particularcoding scheme selected for that data stream. The coded data for eachdata stream may be multiplexed with pilot data using orthogonalfrequency division multiplexing (OFDM) techniques. A wide variety ofother wireless communication techniques may also be used, including butnot limited to time division multi access (TDMA), frequency divisionmulti access (FDMA), code division multi access (CDMA), or anycombination of OFDM, FDMA, TDMA and/or CDMA.

Consistent with FIG. 4, the pilot data is typically a known data patternthat is processed in a known manner and may be used at receiver system450 to estimate the channel response. The multiplexed pilot and codeddata for each data stream is then modulated (e.g., symbol mapped) basedon a particular modulation scheme (e.g., Binary Phase Shift Keying(BPSK), Quadrature Phase Shift Keying (QPSK), M-PSK, or M-QAM(Quadrature Amplitude Modulation), where M may be a power of two)selected for that data stream to provide modulation symbols. The datarate, coding, and modulation for each data stream may be determined byinstructions performed by processor 430 which may be coupled with memory432.

The modulation symbols for the data streams are then provided to a TXMIMO processor 420, which may further process the modulation symbols(e.g., for OFDM). TX MIMO processor 420 can then provide N_(T)modulation symbol streams to N_(T) transmitters (TMTR) 422A-422T(“transmitters 422”). In certain aspects, TX MIMO processor 420 appliesbeamforming weights to the symbols of the data streams and to theantenna from which the symbol is being transmitted. Each of transmitters422 may receive and process a respective symbol stream to provide one ormore analog signals, and further condition (e.g., amplify, filter, andupconvert) the analog signals to provide a modulated signal suitable fortransmission over the MIMO channel. N_(T) modulated signals fromtransmitters 422 are then transmitted from N_(T) antennas 424A-424T(“antennas 424”), respectively.

At receiver system 450, the transmitted modulated signals are receivedby N_(R) antennas 452A-452R (“antennas 452”) and the received signalfrom each of antennas 452 is provided to a respective one of receivers(RCVR) 454A-454R (“receivers 454”). Each of receivers 454 conditions(e.g., filters, amplifies, and downconverts) a respective receivedsignal, digitizes the conditioned signal to provide samples, and furtherprocesses the samples to provide a corresponding “received” symbolstream. A receive (RX) data processor 460 then receives and processesthe N_(R) received symbol streams from N_(R) receivers 454 based on aparticular receiver processing technique to provide N_(T) “detected”symbol streams. The RX data processor 460 then demodulates,deinterleaves and decodes each detected symbol stream to recover thetraffic data for the data stream. The processing by RX data processor460 is complementary to that performed by TX MIMO processor 420 and TXdata processor 414 at transmitter system 410.

A processor 470 that may be coupled with a memory 472 periodicallydetermines which pre-coding matrix to use. The reverse link message maycomprise various types of information regarding the communication linkand/or the received data stream. The reverse link message is thenprocessed by a TX data processor 438, which also receives traffic datafor a number of data streams from a data source 436, modulated by amodulator 480, conditioned by transmitters 454, and transmitted back totransmitter system 410.

At transmitter system 410, the modulated signals from receiver system450 are received by antennas 424, conditioned by receivers 422,demodulated by a demodulator 440, and processed by a RX data processor442 to extract the reverse link message transmitted by the receiversystem 450. Processor 430 then determines which pre-coding matrix to usefor determining the beamforming weights and processes the extractedmessage.

FIG. 5 is a block diagram illustrating an example of a source device 520capable of supporting techniques of this disclosure to reduce latency ina processing pipeline 550 of source device 520. Source device 520 may bea device similar to source device 120 from FIG. 1 or source device 220from FIG. 2, and may operate in the same manner as source device 120 orsource device 220.

Source device 520 includes local display 522, display processor 535,memory 532, wireless modem socket 570, wireless modem 534, andprocessing pipeline 550. Processing pipeline 550 includes buffers andprocessing units executed by processor 531 and transport unit 533.Specifically, processing pipeline 550 includes a video processing engine(VPE) 560 and an encoder 562 within processor 531, and a packetizer 564within transport unit 533. In addition, processing pipeline 550 includeswrite-back (WB) buffers 540 positioned between display processor 535 andVPE 560, frame buffers 542 between VPE 560 and encoder 562, and codedpicture buffers (CPBs) 544 between encoder 562 and packetizer 564.

Source device 520 also includes a hardware accelerator 536 and apipeline manager 538. According to the techniques of this disclosure,pipeline manager 538 configures processing pipeline 550 to provide lowlatency screen capture and buffering for media data at source device520. Specifically, pipeline manager 538 configures processing pipeline550 to include minimum-size buffers and use hardware accelerator 536 toretrieve media data from memory 532 and the minimum-size buffers.

In one example, upon establishing a communication session with one ormore sink devices in the WD system, pipeline manager 538 configuresprocessing pipeline 550 of source device 520 to include minimum-sizebuffers between processing steps to reduce latency. In one case, theminimum-size buffers may include a reduced number of WB buffers 540 forthe media data to move through between display processor 535 and VPE560. For example, pipeline manager 538 may configure processing pipeline550 to include only two WB buffers 540, e.g., ping-pong buffers, to holdat least a most recent frame update of the media data. The WB buffers540 may hold the frame updates prior to processing by VPE 560. Inaddition, the WB buffers 540 may be configured to hold at least the mostrecent frame update prior to being written back to memory 532. Forexample, the two WB buffers 540 may be configured to hold less than 32entries, and in some cases less than 16 entries.

In other cases, the minimum-size buffers may also include a reducednumber of frame buffers 542 for the media data to move through betweenVPE 560 and encoder 562. For example, pipeline manager 538 may configureprocessing pipeline 550 to include only four frame buffers 542, e.g.,two ping-pong buffers and two hold buffers, to hold at least a mostrecent frame update of the media data. In addition, the minimum-sizebuffers may include a reduced number of CPBs 544 for the media data tomove through between encoder 562 and packetizer 564. For example,pipeline manager 538 may configure processing pipeline 550 to includeonly six CPBs 544, e.g., two ping-pong buffers and four hold buffers, tohold at least a most recent frame update of the media data.

Using minimum-size buffers in processing pipeline 550 of source device520, in accordance with the techniques, reduces latency at source device520 because the frame updates move through fewer and smaller buffersbefore and during processing. In addition, minimizing the size of WBbuffers 540 to only two ping-pong buffers with less than 32 entriesallows frame drops to occur at an early stage of processing pipeline 550of source device 520 rather than choking processing pipeline 550 furtherdownstream.

When processing pipeline 550 of source device 520 is modified to includeminimum-size buffers, pipeline manager 538 may also modify the framecapture process within processing pipeline 550 to ensure that the mostrecent frame update is buffered, processed, and transmitted to the sinkdevices. The techniques include buffering at least a most recent frameupdate captured from the media data in the minimum-size buffers, anddropping older frame updates when the minimum-size buffers are full. Forexample, each frame update (e.g., either partial or whole frame) may bequeued or accumulated in WB buffers 540 dedicated for the WD system insource device 520. If minimum-size WB buffers 540 run out of space foradditional frame updates, WB buffers 540 may be configured to drop olderframe updates and maintain more recent frame updates. The minimum-sizeWB buffers 540 may not be able to output frame updates for processing asquickly as new frame updates are received. According to the techniques,one or more of the older frame updates may be dropped from WB buffers540 to allow the new frame update to be buffered, processed, andtransmitted.

As another example, processing pipeline 550 may be configured to usehardware acceleration to retrieve the frame updates from memory 532, WBbuffers 540, frame buffers 542, and/or CPBs 544. For example, processingpipeline 550 may use hardware accelerator 536 to retrieve the frameupdates for processing by the processing units in processing pipeline550 instead of a central processing unit (CPU) of source device 520.Using hardware accelerator 536 may reduce the processing load on the CPUof source device 520, which may increase frame rate and reduce latencyin source device 520.

The image format for pixels of a captured frame of the media data istypically one of RGB888, RGB565, or YUV raw formats. Accessing astandard memory copy of a captured frame of the media data using the CPUof source device 520 will take too much of the CPU load to achieve highframe rate updates. When media data processing for the WD systemconsumes too much of the CPU processing load at source device 520, auser may notice the latency or slowness of media applications executingon source device 520 and on the sink devices in the WD system. Thetechniques include using hardware accelerator 536 to perform directmemory access (DMA) to retrieve the frame updates held in memory 532 orone of the buffers and move the frame updates between processing unitsin processing pipeline 550, independently of the CPU.

Encoder 562 within source device 520 may be hardware and/or softwarebased. After VPE 560 renders the frame updates into frame buffers 542,encoder 562 encodes the frame updates. The encoded frame updates may bebuffered in CPBs 544 prior to packet formation by packetizer 564 andtransmission to the sink devices by wireless modem 534. In some cases,CPBs 544 may be configured to buffer a pointer to an encoded frameupdate stored in memory 532, instead of making an additional memory copyof the encoded frame update for buffering in CPBs 544. As an example,the pointer may specify a source address of the encoded frame update inmemory 532 such that the encoded frame update is referenced in CPBs 544but the actual memory copy is held in memory 532. In this way, sourcedevice 520 may avoid the cost of generating and storing an additionalmemory copy of the encoded frame update. In other examples, thetechniques may use other methods to save the cost of an additionalmemory copy. More specifically, the techniques may include using mappedmemory or send/receive requests to memory 532 in order to reference theencoded frame updates within CPBs 544 without making additional memorycopies of the encoded frame updates.

In a further example, the techniques also include retransmission (i.e.,duplicated push) of encoded frame updates from source device 520 toensure timely receipt by the sink devices to further reduce latency inthe WD system. The duplicated push may be especially useful in the caseof a poor communication channel in which many media data packets may bedropped between source 520 and the sink devices. In one example, sourcedevice 520 may not rely on feedback from the sink devices to retransmitlost frames. Instead, wireless modem 534 of source device 520 mayautomatically retransmit a frame update after a predetermined period oftime if a new frame update has not been received for transmission to thesink devices. For example, wireless modem 534 may automaticallyretransmit the last frame update after approximately 13 seconds if a newframe update is not received. In other cases, wireless modem 534 mayretransmit the last frame update after approximately 10 seconds or less.

The duplicated push performed at source device 520 may enable thedisplay content to recover from corrupted frames at the sink devices dueto unreliable transportation. For example, when wireless modem 534 ofsource device 520 uses User Datagram Protocol (UDP), a relativelyunreliable transportation protocol compared to, e.g., TransmissionControl Protocol (TCP), wireless modem 534 may perform the duplicatedpush to retransmit the last frame update if a new frame update is notreceived after the predetermined period of time. In some examples, theduplicated push interval may be dynamically adjustable based on the typeof media data being transmitted. In the case of media data for a UserInterface (UI) or gaming application, a lost frame is noticeable andwill negatively impact the user experience of the UI application in theWD system. In the case of media data for a video playback application, alost frame will not be readily noticeable and will have little or noeffect on the user experience of the video playback application. For UIand gaming applications, therefore, wireless modem 534 may be configuredto perform duplicated push more frequently than for video playbackapplications. For example, for UI and gaming applications, theduplicated push interval may be reduced to approximately 10 seconds orless.

In some cases, a similar duplicated push mechanism may be used to pushframes out of encoder 562 of source device 520 and/or a decoder in eachof the sink devices. Typically, encoders and decoders do notautomatically output each coded frame, but need to receive a subsequentframe to push out the previously coded frame. The techniques, therefore,may improve synchronization between source device 520 and the one ormore sink devices by providing an additional push to output the codedframe updates.

In addition, the techniques of this disclosure also include prioritizingtransport of audio data over transport of video data between sourcedevice 520 and the sink devices in the WD system. The transport of videodata packets is tied to the transport of associated audio data packetssuch that ensuring that all the audio packets reach the sink devicereduces latency at the sink device waiting to receive dropped packets.Pipeline manager 538 may configure an audio pipeline path to includemore buffering than a video pipeline path in source device 520. Theadditional buffering ensures that fewer audio packets will be dropped atsource device 520. Wireless modem socket 570 may provide a higherpriority transportation queue for the audio pipeline path than for thevideo pipeline path. The higher priority transportation queue ensuresthat the audio packets will be queued for transport at source device 520before the corresponding video packets to avoid delays or stalls in thevideo pipeline path due to video packets waiting for the correspondingaudio packet to be queued.

Conventionally, both audio and video processing pipeline paths have asame or similar amount of buffering and transportation priority. Becausethe audio data requires more careful processing and transportation toensure all the media data is received at the sink devices, conventionalvideo pipeline paths in source devices delay or stall transport of videodata until the associated audio data is ready, which introducesadditional latency into the WD system. By prioritizing the audiopipeline path, the additional delay or stall time in the video pipelinepath is unnecessary.

According to the techniques, the prioritized transport of audio data maybe achieved by setting a type of service (TOS) field in the media datapackets to indicate whether the packet includes audio or video traffic.For example, if the communication channel supports Wi-Fi Multimedia(WMM), the TOS field may indicate an access category defined by WMM forprioritization purposes including voice, video, best-effort, andbackground. The TOS fields in the media data packets enable wirelessmodem socket 570 in source device 520 to place audio packets and videopackets in the different queues with the different priority levels.

In addition, source device 520 may receive feedback information from thesink devices describing transport conditions of the communicationchannel with the sink devices. For example, the feedback information mayinclude an error rate or packet loss determined at a sink device andcommunicated to source device 520. In some cases, the feedbackinformation may be sent from the sink devices to source device 520 overa UIBC established between the sink devices and source device 520 in theWD system. In other cases, the feedback information may be sent tosource device 520 over a different socket link. Additionally, thefeedback information may be communicated using RTCP or some othercustomized signaling.

In response, pipeline manager 538 of source device 520 may modifyprocessing pipeline 550 of source device 520 based on the feedbackinformation. In one example, in response to receiving feedbackinformation describing a poor communication channel, source device 520may increase a duplicate push interval to retransmit the media datapackets, e.g., to more than 10 seconds or more than 13 seconds, orchange a data rate for processing and transmitting the media datapackets. In another example, in response to the feedback information,source device 520 may generally adjust buffer sizes, encodingparameters, or dynamically switch between types of transport protocols.For example, in response to feedback information describing of a poorcommunication channel, source device 520 may switch from a Real TimeProtocol (RTP)/User Datagram Protocol (UDP) communication channel, whichis a relatively unreliable transportation protocol, to anRTP/Transmission Control Protocol (TCP) transportation channel.

FIG. 6 is a block diagram illustrating an example of a sink device 660capable of supporting techniques of this disclosure to reduce latency ina processing pipeline 650 of sink device 660 and improve video playbackat sink device 660. Sink device 660 may be a device similar to sinkdevice 160 from FIG. 1 or sink device 260 from FIG. 3, and may operatein the same manner as sink device 160 or sink device 260.

Sink device 660 includes local display 662, display processor 635,memory 632, wireless modem socket 670, wireless modem 634, andprocessing pipeline 650. Processing pipeline 650 includes buffers andprocessing units executed by processor 631 and transport unit 633.Specifically, processing pipeline 650 includes a parser 680 withintransport unit 633, and decoder 682 and renderer 684 within processor631. In addition, processing pipeline 650 includes buffers 692positioned between parser 680 and decoder 682, a render queue 694positioned between decoder 682 and renderer 684, and frame buffers 696between renderer 684 and display processor 635.

Sink device 660 also includes a pipeline manager 638. According to thetechniques of this disclosure, pipeline manager 638 configuresprocessing pipeline 650 to provide customized playback at sink device660 based on the type of media data received from the source device.Specifically, pipeline manager 638 configures processing pipeline 650 tomodify rendering based on whether the media data includes audio data.

For example, if the media data only includes video data and does notinclude audio data, renderer 684 included in processing pipeline 650 ofsink device 660 is configured to perform accelerated rendering of thevideo data. Upon detecting that the media data does not include audiodata, pipeline manager 638 may disable synchronization at renderer 684.Renderer 684 may then render the video data without waiting tosynchronize with non-existent audio data.

Conventionally, media data processing pipelines are designed for bothvideo and audio data, or for only video data with no audio data. Uponreceiving only video data, a media data processing pipeline designed forboth video and audio data processes the video data at the same speedrequired to processes both video and audio data, including wait time forsynchronization with non-existent audio data. The additional processingtime unnecessarily adds latency into the processing pipeline. Thetechniques of this disclosure enable decoder 682 of sink device 660 todetect a type of media data received and dynamically adjust the playbackprocessing speed at renderer 684 based on the type of media data. Forexample, decoder 682 may detect the presence or absence of an audio timestamp in the media data where the presence of an audio time stampindicates that the media data from the source device includes audiodata.

For example, in the case of media data for a UI application, there is noaccompanying audio data with the video data. For UI application data,pipeline manager 638 may disable synchronization at renderer 684 of sinkdevice 660. In this way, renderer 684 may render the video data for theUI application as quickly as possible without the wait time forprocessing and synchronization of non-existent audio data. In the caseof media data for a video playback application, there may beaccompanying audio data with the video data. For video playbackapplication data with audio data, pipeline manger 638 may enablesynchronization and renderer 684 may render the synchronized video dataand the audio data at a normal processing speed.

In addition, the techniques also enable pipeline manager 638 to adjust asample time at renderer 684 based on media time applicable for renderer684. In this way, when the sample time of the media data set by thesource device is not be applicable for renderer 684 at sink device 660,pipeline manager 638 may select an applicable sample time for the mediadata based on the media time.

As another example, if the media data includes both video data and audiodata, pipeline manager 638 may reduce an audio rendering start-up timerand renderer 684 may render synchronized audio and video data accordingto the reduced start-up timer. In this way, the techniques may reducelatency at sink device 660 even when the media data includes audio data.

In some playback engines, audio rendering may be delayed at start up toavoid missing or dropping incoming audio packets. The delay time may benecessary for some communication system, such as a Bluetooth system. Forother communication systems, such as a WD system, the delay isunnecessary and adds to the end-to-end latency when synchronization isenabled. For example, in order to compensate for Advanced AudioDistribution Profile (A2DP) initialization time, e.g., 1 second or more,which is necessary for the Bluetooth system, the audio rendering startuptimer at renderer 684 of sink device 660 may be set relatively high. Theaudio data rendering will be delayed by the startup time and theincoming samples will have to be buffered before being input to renderer684. If the audio data is delayed, the corresponding video data willalso have to be delayed to keep the audio data and the video datasynchronized.

According to the techniques described in this disclosure, for the WDsystem, the audio rendering startup timer at renderer 684 is reduced toreduce latency and to avoid audio and video data stalls in sink device660. For example, in the case of a WD system, pipeline manager 638 mayreduce or eliminate the audio rendering startup timer in order toprovide faster rendering and playback at sink device 660. The audiorendering startup timer may be reduced to be less than 1 second, lessthan 50 milliseconds (ms), and in some cases less than 20 ms. In thecase of a Bluetooth system, pipeline manager 638 may dynamically resetthe audio rendering startup timer to be relatively high, e.g., 1 secondor more.

In another example, pipeline manager 638 may configure processingpipeline 650 in sink device 660 prior to receiving the media data fromthe source device based on stream header information exchanged during acapability negotiation period of the communication session in order toreduce latency due to set up time. In order to pre-configure processingpipeline 650, the source device and sink device 660 first exchangestream header information that includes information about the media datato be transmitted over the communication channel. The stream headerinformation may be exchanged using Real Time Streaming Protocol (RTSP)or other proprietary messages. Pipeline manager 638 then sets upprocessing pipeline 650 based on the received header information,including configuring buffer sizes, rendering start-up timers,synchronization wait timers, and programmable decoder settings. Afterprocessing pipeline 650 is configured, sink device 660 notifies thesource device to begin transmitting the media data.

Additionally, prior to processing media data received from the sourcedevice, sink device 660 may flush one or more samples of the receivedmedia data from decoder 682. The first few samples of the media data maycomprise old, stalled samples from the source device pipeline generatedduring the negotiation period of the communication session. Thetechniques provide a duplicated push to retransmit frames from thesource device to push the stalled samples out of decoder 682 at sinkdevice 660. In this way, sink device 660 does not waste any processingtime on old, stalled samples of media data.

In some cases, pipeline manager 638 at sink device 660 may insert dummyframes to decoder 682 to push samples out of decoder 682 for renderingby renderer 684. This may be necessary when decoder 682 is notprogrammable and does not support picture order count (POC) decoding ofincoming media data samples. In other cases, where decoder 682 isprogrammable and supports POC, pipeline manager 638 may configuredecoder 682 to output media data samples in according to PIC or decodingorder, instead of display order. Configuring programmable decoder 682 tooutput sample in decoding order ensures that every input sample todecoder 682 is output as soon as the decoding is complete. In this way,stalls and delays at decoder 682 may be reduced or eliminated. Inaddition, pipeline manager 638 may minimize a number of buffers includedin render queue 694 between decoder 682 and renderer 684 to furtherreduce latency in sink device 660. For example, render queue 694 mayinclude 4 or fewer buffers to hold the media data prior to rendering byrenderer 684.

In addition, according to the techniques of this disclosure, pipelinemanager 638 configures processing pipeline 650 to provide customizedbuffering at sink device 660 based on application awareness for themedia data received from the source device. Specifically, decoder 682 ofsource device 660 learns a type of application for the received mediadata, and pipeline manager 638 configures processing pipeline 650 toadjust the size of buffers in processing pipeline 650. In this way, sinkdevice 660 may achieve an appropriate balance between smoothness andlatency for the application type for the media data. Pipeline manager638 may adjust the size of render queue 694, frame buffers 696, or anyother buffer included in processing pipeline 650 that holds data priorto display in the application for the media data.

For example, when the media data is for a video playback application,quality or smoothness of the playback is highest priority at sink device660 and the low latency techniques described above may cause visiblejitter. In this case, pipeline manager 638 may increase the size ofbuffers in processing pipeline 650 to increase smoothness of the mediadata in the video playback application. On the contrary, when the mediadata is for a user interface (UI) application or a gaming application,low latency is the highest priority at sink device 660. In this case,pipeline manager 638 may decrease the size of buffers in processingpipeline 650 to reduce latency for the UI or gaming application. Byreducing the buffer size, pipeline manager 638 enables the media datafor the UI or gaming application to move through processing pipeline 650in sink device 660 without stalls and delays.

In some cases, the type of application for the media data may bedetected at the source device and signaled to sink device 660 in the WDsystem. For example, sink device 660 may detect the application for thereceived media data based on an indication received from the sourcedevice. The source device may determine that the media data is for avideo playback application by detecting incoming audio rates and screenupdate rates of the audio data. The source device may send an indicationto sink device 660 of the start of media data for the video playbackengine, and send another indication to sink device 660 of the end ofmedia data for the video playback application. Sink device 660 mayreceive flags or other indicators with the media data in a media playerprotocol or in another proprietary protocol.

In other cases, the type of application for the media data may bedetected at sink device 660. Decoder 682 at sink device 660 maydetermine the type of application for the received media data based onaudio time stamps included in the received media data at regularintervals. It may be assumed that when the media data includes videodata with corresponding audio data at regular intervals, the media datais for a video playback application. Decoder 682 may, therefore, detectthe audio time stamps occurring at regular intervals while receivingmedia data for a video playback application.

In either case, when decoder 682 of sink device 660 learns that thereceived media data is for a video playback application, pipelinemanager 638 increases the size of buffers, e.g., render queue 694 orframe buffers 696, used to hold the media data prior to display in thevideo playback application. For example, pipeline manager 638 mayconfigure processing pipeline 650 to include more than four buffers inrender queue 694, and to include more than four frame buffers 696, e.g.,two ping-pong buffers and at least 2 hold buffers. When the buffers arecapable of holding a larger amount of media data, the risk of droppingframes decreases and the amount of jitter in the playback alsodecreases.

On the other hand, when decoder 682 of sink device 660 learns that thereceived media data is not for a video playback application but is for aUI or gaming application, pipeline manager 638 decreases the size ofbuffers used to hold the media data prior to display in the UI or gamingapplication. For example, pipeline manager 638 may configure processingpipeline 650 to include less than four buffers in render queue 694, andto include four or fewer frame buffers 696, e.g., two ping-pong buffersand at most 2 hold buffers. In this way, the media data moves throughprocessing pipeline 650 of sink device 660 faster to improve latency.

In some cases, pipeline manager 638 may pause renderer 684 for a periodof time in order to store additional media data samples in render queue694. For example, pipeline manager 638 may pause renderer 684 until athreshold number of samples are stored in render queue 694, and thenresume rendering to increase smoothness of the video playback. In somecases, the threshold number of samples may be set to eight samples, 16samples, or in some cases more than 16 samples.

In addition, sink device 660 may provide feedback information to thesource device describing transport conditions of the communicationchannel with the source device. The source device may modify itsprocessing pipeline based on the feedback information, as described inmore detail above with respect to FIG. 5. For example, the feedbackinformation may include an error rate or packet loss determined at sinkdevice 660 and communicated to the source device. In some cases,wireless modem 634 may send the feedback information from sink device660 to the source device over a UIBC established between sink device 660and the source device in the WD system. In other cases, wireless modem634 may send the feedback information from sink device 660 to the sourcedevice over a different socket link. Additionally, wireless modem 634may communicate the feedback information using RTCP or some othercustomized signaling.

FIG. 7 is a conceptual diagram illustrating an example data packet 700that may be used for delivering user input data and/or feedback dataobtained at a sink device to a source device. Aspects of data packet 700will be explained with reference to FIG. 1, but the techniques discussedmay be applicable to additional types of WD systems. Data packet 700 mayinclude a data packet header 710 followed by payload data 750. Datapacket 700 may, for example, be transmitted from sink device 160 tosource device 120 in order to signal user input data received at sinkdevice 160, or to signal feedback information describing transportconditions of communication channel 150.

The type of data, e.g., user input data or feedback data, included inpayload data 750 may be identified in data packet header 710. In thisway, based on the content of data packet header 710, source device 120may parse payload data 750 of data packet 700 to identify the user inputdata or the feedback data from sink device 160. As used in thisdisclosure, the terms “parse” and “parsing” generally refer to theprocess of analyzing a bitstream to extract data from the bitstream.Extracting data may, for example, include identifying how information inthe bitstream is formatted. As will be described in more detail below,data packet header 710 may define one of many possible formats forpayload data 750. By parsing data packet header 710, source device 120can determine how payload data 750 is formatted, and how to parsepayload data 750 to extract the user input commands or the feedbackinformation.

In some examples, data packet header 710 may include one or more fields720 formatted as shown in FIG. 7. The numbers 0-15 and bit offsets 0, 16and 32 adjacent to fields 720 are intended to identify bit locationswithin data packet header 710 and are not intended to actually representinformation contained within data packet header 710. Data packet header710 includes a version field, a timestamp flag, a reserved field, aninput category field, a length field, and an optional timestamp field.In the example of FIG. 7, the version field is a 3-bit field that mayindicate the version of a particular communications protocol beingimplemented by sink device 160. The value in the version field mayinform source device 120 how to parse the remainder of data packetheader 710 as well as how to parse payload data 750.

In the example of FIG. 7, the timestamp flag (T) is a 1-bit field thatindicates whether or not the timestamp field is present in data packetheader 710. When present, the timestamp field is a 16-bit fieldcontaining a timestamp based on multimedia data that was generated bysource device 120 and transmitted to sink device 160. The timestamp may,for example, be a sequential value assigned to frames of video by sourcedevice 120 prior to the frames being transmitted to sink device 160.Upon parsing data packet header 710 and determining whether thetimestamp field is present, source device 120 knows whether it needs toprocess a timestamp included in the timestamp field. In the example ofFIG. 7, the reserved field is an 8-bit field reserved for futureversions of the particular protocol identified in the version field.

In the example of FIG. 7, the input category field is a 4-bit field toidentify an input category for the data contained in payload data 750.For example, sink device 160 may categorize user input data to determinean input category. User input data may be categorized based on thedevice from which a command is received or based on properties of thecommand itself. Sink device 160 may also categorize feedback informationto determine an input category. Feedback information may be categorizedbased on the type of feedback information determined at sink device 160or the type of operation requested at source device 120 based on thefeedback information. The value of the input category field, possibly inconjunction with other information of data packet header 710, identifiesto source device 120 how payload data 750 is formatted. Based on thisformatting, source device 120 can parse payload data 750 to extract theuser input commands or the feedback information.

The length field may comprise a 16-bit field to indicate the length ofdata packet 700. As data packet 700 is parsed by source device 120 inwords of 16 bits, data packet 700 can be padded up to an integer numberof 16 bits. Based on the length contained in the length field, sourcedevice 120 can identify the end of payload data 750 (i.e. the end ofdata packet 700) and the beginning of a new, subsequent data packet.

The various sizes of the fields provided in the example of FIG. 7 aremerely intended to be explanatory, and it is intended that the fieldsmay be implemented using different numbers of bits than what is shown inFIG. 7. Additionally, it is also contemplated that data packet header710 may include fewer than all the fields discussed above or may useadditional fields not discussed above. Indeed, the techniques of thisdisclosure may be flexible, in terms of the actual format used for thevarious data fields of the packets.

FIG. 8 is a flowchart illustrating an exemplary operation of a sourcedevice capable of supporting low-latency frame capture and buffering ofmedia data in a processing pipeline. The illustrated operation will bedescribed with respect to processing pipeline 550 included in sourcedevice 520 from FIG. 5. In other examples, the illustrated operation maybe performed by source device 220 from FIG. 2, source device 120 fromFIG. 1, or another source device of a WD system.

Source device 520 first establishes a communication session with one ormore sink devices in a WD system (800). Source device 520 may establishthe communication session according to a capability negotiation with thesink devices. According to the techniques of this disclosure, in orderto support low-latency frame capture and buffering of media data,pipeline manager 538 of source device 520 configures processing pipeline550 to include minimum-size buffers (802). Specifically, pipelinemanager 538 may configure processing pipeline 550 to reduce the size ofWB buffers 540 to only include two ping-pong buffers. Reducing thenumber of buffers for media data to move through along processingpipeline 550 will reduce latency at source device 520. In addition,pipeline manager 538 may configure processing pipeline 550 to reduce thesize of frame buffers 542 to minimum-size frame buffers capable ofholding at least a most recent frame update of the media data.

Further, according to the techniques, pipeline manager 538 may configureprocessing pipeline 550 to use hardware accelerator 536 to performdirect memory access of media data in processing pipeline 550 (804).Retrieving frame updates of the media data from memory 532 and thebuffers in processing pipeline 550 using a standard memory copy uses toomuch CPU load. In order to increase a frame rate of the media data andreduce latency, processing pipeline 550 instead uses hardwareaccelerator 536 to access and move the frame updates between processingunits of processing pipeline 550, independent of the CPU.

After processing pipeline 550 is configured in source device 520, sourcedevice 520 may begin processing media data for transmission to the sinkdevices in the WD system. Display processor 535 captures frame updatesof media data from a media source (806). The media source may be acamera or other media capture device included within source device 520,or may be an external media source connected to source device 520through either a wired or wireless connection. The frame updates mayinclude full frames of the media data, partial frames that representonly updated portions of frames, or some combination of the two.

After capturing a frame update, display processor 535 sends a request toWB buffers 540 to determine whether the minimum-size WB buffers 540 arefull (808). If the minimum-size WB buffers 540 are full (YES branch of808), then receiving the request from display processor 535 will triggerWB buffers 540 to drop one or more of the older frame updates held in WBbuffers 540 (810). After dropping the older frame updates, WB buffers540 buffer the most recent frame update captured by display processor535 (812). If the minimum-size WB buffers 540 are not full uponreceiving the request from display processor 525 (NO branch of 808),then WB buffers 540 may immediately buffer the most recent frame updatecaptured by display processor 535 (812). Similar processes may be usedfor buffering the frame updates in other minimum-sized buffers alongprocessing pipeline 550, such as frame buffers 542. Once the most recentframe update is held in WB buffers 540, the frame update may then bewritten from WB buffers 540 to memory 532 via hardware accelerator 536.

In addition, hardware accelerator 536 retrieves the frame updates fromWB buffers 540 and moves the frame updates between processing units andbuffers along processing pipeline 550 (814). The retrieved frame updatesare then processed in processing pipeline 550 for transmission to thesink devices in the WD system (816). For example, within processor 531,video processing engine (VPE) 560 renders the frame updates into framebuffers 542 and encoder 562 encodes the frames updates from framebuffers 542. The encoded frame updates may be buffered in coded picturebuffers (CPBs) 544 prior to forming the frame updates into packets withpacketizer 564 within transport unit 533. According to the techniques,instead of buffering a memory copy of the encoded frame updates in CPBs544, a pointer to the encoded frame updates that are stored in memory532 may be buffered in CPBs 544 without creating a memory copy of theencoded frame update.

Wireless modem 534 then transmits the processed frame updates to the oneor more sink devices over the communication session in the WD system(818). After transmitting the processed frame updates, wireless modem534 may retransmit the processed frame updates (i.e., perform duplicatepush) after a predetermined period of time until a new frame update isreceived for transmission. The duplicate push may reduce end-to-endlatency in the WD system by ensuring that the sink devices receive thetransmitted frame updates and do not waste processing time waiting fordropped packets.

FIG. 9 is a flowchart illustrating an exemplary operation of a sinkdevice capable of supporting customized video playback in a processingpipeline. The illustrated operation will be described with respect toprocessing pipeline 650 included in sink device 660 from FIG. 6. Inother examples, the illustrated operation may be performed by sinkdevice 360 from FIG. 3, sink device 160 from FIG. 1, or another sinkdevice of a WD system.

Sink device 660 first establishes a communication session with a sourcedevice in a WD system (900). Sink device 660 may establish thecommunication session according to a capability negotiation with thesource device. According to the techniques of this disclosure, in orderto support customized video playback in processing pipeline 650, sinkdevice 660 exchanges stream header information for a stream of mediadata with the source device during the capability negotiation period forthe communication session (902). Pipeline manager 638 then configuresprocessing pipeline 650 in sink device 660 based on the received streamheader information (904).

For example, based on the stream header information, pipeline manager638 may configure buffer sizes, rendering start-up timers,synchronization wait timers, and programmable decoder settings, and thelike within processing pipeline 650 prior to receiving media data fromthe source device. Once processing pipeline 650 is configured in sinkdevice 650 for the stream of media data, wireless modem 634 may notifythe source device to begin transmitting the stream of media data to sinkdevice 660 (906). In this way, upon receiving media data to be decodedand rendered from the source device, sink device 660 does not waste anyprocessing time to set up processing pipeline line 650.

After processing pipeline 650 is configured, sink device 660 beginsreceiving media data from the source device (908). Parser 680de-packetizes the encoded media data. Decoder 682 then decodes thereceived media data (910). The received media data includes at leastvideo data. Upon decoding, decoder 682, or some other processing unit inprocessing pipeline 650, detects whether the decoded media data includesaudio data (912). For example, decoder 682 may determine that the mediadata includes audio data by detecting an audio time stamp in thereceived media data indicating that the media data includes audio data.Similarly, decoder 682 may determine that the media data only includesvideo data based on the absence of an audio time stamp in the receivedmedia data.

If audio data is not included in the media data (NO branch of 914),processing pipeline 650 performs accelerated rendering of the videodata. More specifically, pipeline manager 638 disables synchronizationof the video data with audio data at renderer 684 (916). Renderer 684then renders the video data without waiting to synchronize withnon-existent audio data (918). In some cases, when the media dataincludes only video data, pipeline manager 638 may not explicitlydisable synchronization, but may configure renderer 684 to ignore anyaudio data and render the video data without waiting to synchronize withnon-existent audio data. In addition, pipeline manger 638 may alsoincrease a sample time of the video data based on a media timeapplicable for renderer 684. In this way, renderer 684 may performaccelerated rendering of the video data according to the increasedsample time.

If audio data is included in the media data (YES branch of 914),pipeline manager 638 may reduce an audio rendering start-up timer atrenderer 684 (920). For example, in the case of some communicationsystems, the audio rendering start-up timer at renderer 684 may be kepthigh to compensate for initialization time of the communication system.This is not necessary for the WD system. Pipeline manager 638,therefore, may reduce the audio rendering start-up timer for the WDsystem in order to reduce latency even when audio data is included inthe media data. Renderer 638 may then synchronize the video data withthe audio data (922), and render the synchronized video data and audiodata according to the reduced start-up timer (924).

In some cases, frames of the video data may stall in decoder 682 andcause additional latency at sink device 660 with renderer 684 waiting toreceive the next video frame from decoder 682. According to thetechniques, when decoder 682 is a non-programmable decoder, pipelinemanager 638 may insert dummy frames into the video data at sink device660 to push the decoded samples of the video data out of decoder 682 forrendering. When decoder 682 is a programmable decoder, pipeline manager638 may configure programmable decoder 682 to output the decoded samplesof the video data in decoding order for rendering as soon as decoding iscomplete. Typically, decoders output samples in display order bydefault. In this case, pipeline manager 638 may change the defaultsetting to move the decoded frames through decoder 682 faster.

Additionally, upon receiving the media data from the source device,pipeline manger 638 may flush one or more samples of the received mediadata out of decoder 682 prior to rendering the received media data. Insome cases, the first few samples of media data transmitted from thesource device may include stalled samples of old media data at thesource device. Pipeline manager 638 may flush these samples from sinkdevice 660 to avoid spending processing time and resources on old mediadata.

FIG. 10 is a flowchart illustrating an exemplary operation of a sinkdevice capable of supporting customized buffering based on media dataapplication awareness in a processing pipeline. The illustratedoperation will be described with respect to processing pipeline 650included in sink device 660 from FIG. 6. In other examples, theillustrated operation may be performed by sink device 360 from FIG. 3,sink device 160 from FIG. 1, or another sink device of a WD system.

Sink device 660 first establishes a communication session with a sourcedevice in a WD system (1000). Sink device 660 may establish thecommunication session according to a capability negotiation with thesource device. Sink device 660 then begins receiving media data from thesource device (1010). According to the techniques of this disclosure, inorder to support customized buffering based on a type of application formedia data in processing pipeline 650, sink device 660 learns the typeof application for the received media data and pipeline manager 638adjusts sizes of buffers in processing pipeline 650 based on the type ofapplication.

In order to learn the application type for the received media data,parser 680 first determines whether an indication of the type ofapplication for the media data is received from the source device withthe media data (1020). If an indication is received from the sourcedevice (YES branch of 1020), decoder 682 of sink device 660 learns thetype of application for the media data based on the indication from thesource device (1030). In this case, the source device in the WD systemdetects the type of application for the media data, and transmits themedia data with the indication of the type of application for the mediadata to sink device 660. In some cases, for example, sink device 660 mayreceive an indication from the source device of a stream of media datafor a video playback application, and sink device 660 may also receivean indication from the source device of an end of the stream of mediadata for the video playback application.

If an indication is not received from the source device (NO branch of1020), decoder 682 of sink device 660 learns the type of application forthe media data based on the presence or absence of audio time stamps inthe media data (1040). For example, decoder 682 may determine that themedia data is for a video playback application by detecting audio timestamps at regular intervals in the media data. As another example,decoder 682 may determine that the media data is for a UI or gamingapplication based on the absence of audio time stamps at regularintervals in the received media data.

When decoder 682 of sink device 660 learns that the type of applicationfor the received media data is a UI or gaming application and not avideo playback application (NO branch of 1050), pipeline manager 638configures processing pipeline 650 to decrease sizes of the buffers thathold media data in processing pipeline 650 prior to display in the UI orgaming application (1060). For example, pipeline manager 638 maydecrease the size of render queue 694 and/or the size of frame buffers696 to reduce latency of the media data moving through the buffers. Inthe case of UI or gaming applications, the primary concern in the WDsystem is to provide a low latency user experience with video playbackquality being a lesser concern.

When decoder 682 of sink device 660 learns that the type of applicationfor the received media data is a video playback application (YES branchof 1050), pipeline manager 638 may increase sizes of the buffers thathold media data in processing pipeline 650 prior to display in the videoplayback application (1070). For example, pipeline manager 638 mayincrease the size of render queue 694 and/or the size of frame buffers696 to improve the quality (i.e., smoothness) of the video playback inthe video playback application. Although increasing the buffer sizes mayincrease latency, the primary concern in the case of video playbackapplications is to provide a high quality video playback user experiencewith some tradeoff of increased latency.

Renderer 684 renders the media data from the render queue 694 into framebuffers 696 in processing pipeline 650 for use in the type ofapplication indicated for the media data (1080). Display processor 635then displays the rendered media data from frame buffers 696 in theapplication for the media data operating at sink device 660 (1090).

In some cases, when the media data is for a video playback application,pipeline manager 638 may direct renderer 684 to pause rendering of themedia data from render queue 694 in order for sink device 660 to receiveadditional samples of the media data. Pipeline manager 638 then directsrenderer 684 to resume rendering of the media data from render queue 694after a threshold number of samples of the media data are stored inrender queue 694. In this way, the quality or smoothness of the videoplayback may be further improved by having multiple samples of the mediadata ready to be rendered in render queue 694.

FIG. 11 is a flowchart illustrating an exemplary operation of a sourcedevice and a sink device capable of supporting prioritized transport ofaudio data in a WD system. The illustrated operation will be describedwith respect to processing pipeline 550 in source device 520 from FIG. 5and with respect to processing pipeline 650 included in sink device 660from FIG. 6. In other examples, the illustrated operation may beperformed by source device 220 from FIG. 2, sink device 360 from FIG. 3,source device 120 and sink device 160 from FIG. 1, or other sourcedevices and sink devices of a WD system.

Source device 520 first establishes a communication session with sinkdevice 660 in a WD system (1100). Source device 520 and sink device 660may establish the communication session according to a capabilitynegotiation. According to the techniques of this disclosure, in order toprovide prioritized transport of audio data, pipeline manager 538 insource device 520 configures an audio path in processing pipeline 550 toinclude more buffering than a video path in processing pipeline 550(1110). In addition, pipeline manager 538 in source device 520configures an audio transport queue in wireless modem socket 570 withhigher priority than a video transport queue in wireless modem socket570 (1120).

Once the prioritized transport path for audio data is configured, sourcedevice 520 begins processing audio data and video data in the separateprocessing pipeline paths (1130). After the audio and video data isprocessed, wireless modem 534 transports the audio data and associatedvideo data from the separate transport queues in socket 570 to sinkdevice 660 (1140).

Sink device 660 receives the audio data and associated video data fromsource device 520 over the communication channel in the WD system(1150). Processor 631 of sink device 660 may determine transportconditions of the communication channel based on the received media data(1160). For example, processor 631 of sink device 660 may determine anerror rate or amount of packet loss for the media data after transportover the communication channel. Transport unit 633 of sink device 660may generate a packet to transmit feedback information describing thetransport conditions of the communication channel from sink device 660back to source device 520 (1170). For example, wireless modem 634 maytransmit the packet from sink device 660 over a UIBC or other feedbackchannel to source device 660 using RTCP.

Upon receiving the feedback information describing the transportconditions of the communication channel, pipeline manager 538 of sourcedevice 520 may modify processing pipeline 550 based on the feedbackinformation from sink device 660 (1180). Once processing pipeline 550 isconfigured for the communication channel, source device 520 resumesprocessing audio data and video data in the separate processing pipelinepaths (1130), and transporting the audio data and associated video datafrom the separate transport queues in socket 570 to sink device 660(1140).

In one or more examples, the functions described may be implemented inhardware, software, firmware, or any combination thereof. If implementedin software, the functions may be stored on or transmitted over as oneor more instructions or code on a computer-readable medium.Computer-readable media may include computer data storage media orcommunication media including any medium that facilitates transfer of acomputer program from one place to another. In some examples,computer-readable media may comprise non-transitory computer-readablemedia. Data storage media may be any available media that can beaccessed by one or more computers or one or more processors to retrieveinstructions, code and/or data structures for implementation of thetechniques described in this disclosure.

By way of example, and not limitation, such computer-readable media cancomprise non-transitory media such as RAM, ROM, EEPROM, CD-ROM or otheroptical disk storage, magnetic disk storage, or other magnetic storagedevices, flash memory, or any other medium that can be used to carry orstore desired program code in the form of instructions or datastructures and that can be accessed by a computer. Also, any connectionis properly termed a computer-readable medium. For example, if thesoftware is transmitted from a website, server, or other remote sourceusing a coaxial cable, fiber optic cable, twisted pair, digitalsubscriber line (DSL), or wireless technologies such as infrared, radio,and microwave, then the coaxial cable, fiber optic cable, twisted pair,DSL, or wireless technologies such as infrared, radio, and microwave areincluded in the definition of medium. Disk and disc, as used herein,includes compact disc (CD), laser disc, optical disc, digital versatiledisc (DVD), floppy disk and blu-ray disc where disks usually reproducedata magnetically, while discs reproduce data optically with lasers.Combinations of the above should also be included within the scope ofcomputer-readable media.

The code may be executed by one or more processors, such as one or moredigital signal processors (DSPs), general purpose microprocessors,application specific integrated circuits (ASICs), field programmablelogic arrays (FPGAs), or other equivalent integrated or discrete logiccircuitry. Accordingly, the term “processor,” as used herein may referto any of the foregoing structure or any other structure suitable forimplementation of the techniques described herein. In addition, in someaspects, the functionality described herein may be provided withindedicated hardware and/or software modules configured for encoding anddecoding, or incorporated in a combined codec. Also, the techniquescould be fully implemented in one or more circuits or logic elements.

The techniques of this disclosure may be implemented in a wide varietyof devices or apparatuses, including a wireless handset, an integratedcircuit (IC) or a set of ICs (e.g., a chip set). Various components,modules, or units are described in this disclosure to emphasizefunctional aspects of devices configured to perform the disclosedtechniques, but do not necessarily require realization by differenthardware units. Rather, as described above, various units may becombined in a codec hardware unit or provided by a collection ofinteroperative hardware units, including one or more processors asdescribed above, in conjunction with suitable software and/or firmware.

Various embodiments of the invention have been described. These andother embodiments are within the scope of the following claims.

What is claimed is:
 1. A method comprising: establishing a communicationsession at a sink device with a source device in a Wireless Display (WD)system; receiving, with the sink device, media data from the sourcedevice, wherein the media data includes at least video data; decodingthe received media data with a processing pipeline of the sink device;detecting whether the decoded media data includes audio data; and whenthe decoded media data does not include audio data, performingaccelerated rendering of the video data with the processing pipeline ofthe sink device without waiting to synchronize the video data with audiodata.
 2. The method of 1, wherein performing accelerated rendering ofthe video data comprises disabling synchronization between the videodata and audio data at a renderer included in the processing pipeline.3. The method of 1, wherein performing accelerated rendering of thevideo data comprises configuring a renderer included in the processingpipeline to render the video data.
 4. The method of claim 1, whereinperforming accelerated rendering of the video data comprises increasinga sample time of the video data received from the source device based ona media time applicable for a renderer included in the processingpipeline, and rendering the video data according to the increased sampletime.
 5. The method of claim 1, wherein detecting whether the receivedmedia data includes audio data comprises detecting one of a presence oran absence of an audio time stamp in the received media data, whereinthe presence of the audio time stamp indicates that the media dataincludes audio data.
 6. The method of claim 1, further comprising:receiving stream header information from the source device during acapability negotiation period for the communication session prior toreceiving the media data; configuring the processing pipeline of thesink device based on the stream header information; and after theprocessing pipeline is configured, notifying the source device to begintransmitting the media data.
 7. The method of claim 1, wherein theprocessing pipeline of the sink device includes a decoder that is notprogrammable, further comprising inserting dummy frames into the videodata at the sink device to push the decoded samples of the video dataout of the decoder for rendering.
 8. The method of claim 1, furthercomprising, when the received media data includes audio data: reducingan audio rendering start-up timer for a renderer included in theprocessing pipeline of the sink device; synchronizing the video datawith the audio data; and rendering the synchronized audio data and videodata according to the reduced start-up timer.
 9. The method of claim 8,wherein configuring the processing pipeline based on the stream headerinformation comprises configuring one or more of buffer sizes, renderingstart-up timers, synchronization wait timers, and programmable decodersettings.
 10. The method of claim 1, wherein the processing pipeline ofthe sink device includes a programmable decoder, further comprisingconfiguring the programmable decoder to output the decoded samples ofthe video data in decoding order for rendering as soon as decoding iscomplete.
 11. The method of claim 1, further comprising, upon receivingthe media data from the source device, flushing one or more samples ofthe received media data out of a decoder included in the processingpipeline of the sink device prior to rendering the received media data,wherein the one or more samples comprise stalled samples of old mediadata from the source device.
 12. The method of claim 1, furthercomprising transmitting feedback information describing transportchannel conditions to the source device, wherein the feedbackinformation is used to modify a processing pipeline of the sourcedevice.
 13. The method of claim 1, wherein establishing thecommunication session at the sink device comprises receivingadvertisements of the media data for the communication session from thesource device, and sending a request to join the communication sessionto the source device.
 14. A sink device comprising: a processingpipeline including one or more processing units configured to establisha communication session at the sink device with a source device in aWireless Display (WD) system, receive media data from the source device,wherein the media data includes at least video data, decode the receivedmedia data, detect whether the received media data includes audio data,and, when the received media data does not include audio data, performaccelerated rendering of the video data without waiting to synchronizethe video data with audio data; and a pipeline manager configured tomanage the processing pipeline of the sink device.
 15. The sink deviceof 14, wherein, when the received media data does not include audiodata, the pipeline manager disables synchronization between the videodata and audio data at a renderer included in the processing pipeline,and wherein the one or more processing units of the processing pipelineare configured to render the video data without waiting to synchronizewith audio data.
 16. The sink device of claim 14, wherein, when thereceived media data does not include audio data, the pipeline managerconfigures a renderer included in the processing pipeline to render thevideo data.
 17. The sink device of claim 14, wherein the pipelinemanager increases a sample time of the video data received from thesource device based on a media time applicable for a renderer includedin the processing pipeline, and wherein the one or more processing unitsof the processing pipeline are configured to render the video dataaccording to the increased sample time.
 18. The sink device of claim 14,wherein the one or more processing units of the processing pipeline areconfigured to detect one of a presence or an absence of an audio timestamp in the received media data, wherein the presence of the audio timestamp indicates that the media data includes audio data.
 19. The sinkdevice of claim 14, wherein the one or more processing units of theprocessing pipeline are configured to receive stream header informationfrom the source device during a capability negotiation period for thecommunication session prior to receiving the media data; wherein thepipeline manager configures the processing pipeline of the sink devicebased on the stream header information; and wherein, after theprocessing pipeline is configured, the one or more processing units ofthe processing pipeline are configured to notify the source device tobegin transmitting the media data.
 20. The sink device of claim 19,wherein the pipeline manager configures one or more of buffer sizes,rendering start-up timers, synchronization wait timers, and programmabledecoder settings for the processing pipeline.
 21. The sink device ofclaim 14, wherein, when the received media data includes audio data, thepipeline manager reduces an audio rendering start-up timer for arenderer included in the processing pipeline of the sink device, andwherein the one or more processing units of the processing pipeline areconfigured to synchronize the video data with the audio data, and renderthe synchronized audio data and video data according to the reducedstart-up timer.
 22. The sink device of claim 14, further comprising adecoder that is not programmable included in the processing pipeline,wherein the one or more processing units of the processing pipeline areconfigured to insert dummy frames into the video data at the sink deviceto push the decoded samples of the video data out of the decoder forrendering.
 23. The sink device of claim 14, further comprising aprogrammable decoder included in the processing pipeline, wherein thepipeline manager configures the programmable decoder to output thedecoded samples of the video data in decoding order for rendering assoon as decoding is complete.
 24. The sink device of claim 14, wherein,upon receiving the media data from the source device, the one or moreprocessing units of the processing pipeline are configured to flush oneor more samples of the received media data out of a decoder included inthe processing pipeline of the sink device prior to rendering thereceived media data, wherein the one or more samples comprise stalledsamples of old media data from the source device.
 25. The sink device ofclaim 14, wherein the one or more processing units of the processingpipeline are configured to transmit feedback information describingtransport channel conditions to the source device, wherein the feedbackinformation is used to modify a processing pipeline of the sourcedevice.
 26. The sink device of claim 15, wherein the one or moreprocessing units of the processing pipeline are configured to receiveadvertisements of the media data for the communication session from thesource device, and send a request to join the communication session tothe source device to establish the communication session at the sinkdevice.
 27. A sink device comprising: means for establishing acommunication session at the sink device with a source device in aWireless Display (WD) system; means for receiving media data from thesource device, wherein the media data includes at least video data;means for decoding the received media data with a processing pipeline ofthe sink device; means for detecting whether the received media dataincludes audio data; and when the received media data does not includeaudio data, means for performing accelerated rendering of the video datawith the processing pipeline of the sink device without waiting tosynchronize the video data with audio data.
 28. The sink device of 27,further comprising, when the received media data does not include audiodata, means for disabling synchronization between the video data andaudio data at a renderer included in the processing pipeline, and meansfor rendering the video data without waiting to synchronize with audiodata.
 29. The sink device of 27, further comprising, when the receivedmedia data does not include audio data, means for configuring a rendererincluded in the processing pipeline to render the video data.
 30. Thesink device of claim 27, further comprising means for increasing asample time of the video data received from the source device based on amedia time applicable for a renderer included in the processingpipeline, and means for rendering the video data according to theincreased sample time.
 31. The sink device of claim 27, furthercomprising means for detecting one of a presence or an absence of anaudio time stamp in the received media data, wherein the presence of theaudio time stamp indicates that the media data includes audio data. 32.The sink device of claim 27, further comprising: means for receivingstream header information from the source device during a capabilitynegotiation period for the communication session prior to receiving themedia data; means for configuring the processing pipeline of the sinkdevice based on the stream header information; and after the processingpipeline is configured, means for notifying the source device to begintransmitting the media data.
 33. The sink device of claim 27, furthercomprising, when the received media data includes audio data: means forreducing an audio rendering start-up timer for a renderer included inthe processing pipeline of the sink device; means for synchronizing thevideo data with the audio data; and means for rendering the synchronizedaudio data and video data according to the reduced start-up timer. 34.The sink device of claim 27, wherein the processing pipeline of the sinkdevice includes a decoder that is not programmable, further comprisingmeans for inserting dummy frames into the video data at the sink deviceto push the decoded samples of the video data out of the decoder forrendering.
 35. The sink device of claim 27, wherein the processingpipeline of the sink device includes a programmable decoder, furthercomprising means for configuring the programmable decoder to output thedecoded samples of the video data in decoding order for rendering assoon as decoding is complete.
 36. The sink device of claim 27, furthercomprising, upon receiving the media data from the source device, meansfor flushing one or more samples of the received media data out of adecoder included in the processing pipeline of the sink device prior torendering the received media data, wherein the one or more samplescomprise stalled samples of old media data from the source device.
 37. Anon-transitory computer-readable medium comprising instructions thatwhen executed in a sink device cause a programmable processor to:establish a communication session at the sink device with a sourcedevice in a Wireless Display (WD) system; receive media data from thesource device, wherein the media data includes at least video data;decode the received media data with a processing pipeline of the sinkdevice; detect whether the received media data includes audio data; andwhen the received media data does not include audio data, performaccelerated rendering of the video data with the processing pipeline ofthe sink device without waiting to synchronize the video data with audiodata.
 38. The non-transitory computer-readable medium of 37, wherein,when the received media data does not include audio data, theinstructions cause the programmable processor to disable synchronizationbetween the video data and audio data at a renderer included in theprocessing pipeline, and render the video data without waiting tosynchronize with audio data.
 39. The non-transitory computer-readablemedium of 37, wherein, when the received media data does not includeaudio data, the instructions cause the programmable processor toconfigure a renderer included in the processing pipeline to render thevideo data.
 40. The non-transitory computer-readable medium of 37,wherein the instructions cause the programmable processor to increase asample time of the video data received from the source device based on amedia time applicable for a renderer included in the processingpipeline, and render the video data according to the increased sampletime.
 41. The non-transitory computer-readable medium of 37, wherein theinstructions cause the programmable processor to detect one of apresence or an absence of an audio time stamp in the received mediadata, wherein the presence of the audio time stamp indicates that themedia data includes audio data.
 42. The non-transitory computer-readablemedium of 37, further comprising instructions that cause theprogrammable processor to: receive stream header information from thesource device during a capability negotiation period for thecommunication session prior to receiving the media data; configure theprocessing pipeline of the sink device based on the stream headerinformation; and after the processing pipeline is configured, notify thesource device to begin transmitting the media data.
 43. Thenon-transitory computer-readable medium of 37, further comprising, whenthe received media data includes audio data, instructions that cause theprogrammable processor to: reduce an audio rendering start-up timer fora renderer included in the processing pipeline of the sink device;synchronize the video data with the audio data; and render thesynchronized audio data and video data according to the reduced start-uptimer.
 44. The non-transitory computer-readable medium of 37, whereinthe processing pipeline of the sink device includes a decoder that isnot programmable, further comprising instructions that cause theprogrammable processor to insert dummy frames into the video data at thesink device to push the decoded samples of the video data out of thedecoder for rendering.
 45. The non-transitory computer-readable mediumof 37, wherein the processing pipeline of the sink device includes aprogrammable decoder, further comprising instructions that cause theprogrammable processor to configure the programmable decoder to outputthe decoded samples of the video data in decoding order for rendering assoon as decoding is complete.
 46. The non-transitory computer-readablemedium of 37, further comprising, upon receiving the media data from thesource device, instructions that cause the programmable processor toflush one or more samples of the received media data out of a decoderincluded in the processing pipeline of the sink device prior torendering the received media data, wherein the one or more samplescomprise stalled samples of old media data from the source device.